﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;

namespace TangoFamilyAndGuide.RN
{
    public class AirTicket
    {
        public static void Validar(Entidades.AirTicket AirTicket, string ClaveCatpcha, string Clave)
        {
            if (!Funciones.EsEmail(AirTicket.Email))
            {
                throw new EX.Validaciones.ValorInvalido("Email");
            }
            else
            {
                if (AirTicket.PaisOrigen == "" || AirTicket.ProvinciaOrigen == "")
                {
                    throw new EX.Validaciones.ValorInvalido("Source");
                }
                else
                {
                    if (AirTicket.PaisDestino == "" || AirTicket.ProvinciaDestino == "")
                    {
                        throw new EX.Validaciones.ValorInvalido("Destination");
                    }
                    else
                    {
                        if (AirTicket.FechaDesde < DateTime.Today.AddDays(7))
                        {
                            throw new EX.Validaciones.ValorNoInfo("Data from (you can not enter a date less than " + DateTime.Today.AddDays(7).ToString("dd/MM/yyyy") + ") ");
                        }
                        else
                        {
                            if (AirTicket.CantidadPersonasAdult < 1)
                            {
                                throw new EX.Validaciones.ValorNoInfo("Adults");
                            }
                            else
                            {
                                if (AirTicket.FechaDesde > AirTicket.FechaHasta)
                                {
                                    throw new EX.Validaciones.ValorInvalido("Dates (date to is less than date from) ");
                                }
                                else
                                {
                                    if (!ClaveCatpcha.Equals(Clave.ToLower()))
                                    {
                                        throw new EX.Validaciones.ValorInvalido("Code");
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        public static void Registrar(out int IdAirTicket, Entidades.AirTicket AirTicket, Entidades.Sesion Sesion)
        {
            DB.AirTicket db = new DB.AirTicket(Sesion);
            AirTicket.WF.Estado = "Active";
            IdAirTicket = db.Crear(AirTicket);
            Email(AirTicket);
        }
        public static void Email(Entidades.AirTicket AirTicket)
        {
            string cuentaMailCedeira;
            cuentaMailCedeira = System.Configuration.ConfigurationManager.AppSettings["InstitucionalContactoMailMotivoOtro"];
            RN.EnvioCorreo.AirTicket(AirTicket, cuentaMailCedeira);
        }
        public static List<Entidades.AirTicket> ListaPorIdAirTicket(int IdAirTicket, bool SoloPropias, Entidades.Sesion Sesion)
        {
            DB.AirTicket db = new DB.AirTicket(Sesion);
            return db.ListaPorIdAirTicket(IdAirTicket, SoloPropias);
        }
        public static List<Entidades.AirTicket> Lista(out int CantidadFilas, int IndicePagina, int TamañoPagina, string OrderBy, string Nombre, string Pais, string Provincia, string Localidad, string Estado, string SessionID, Entidades.Sesion Sesion)
        {
            List<Entidades.AirTicket> listaAirTicket = new List<Entidades.AirTicket>();
            DB.AirTicket db = new DB.AirTicket(Sesion);
            if (OrderBy.Equals(String.Empty))
            {
                OrderBy = "IdAirTicket desc";
            }
            listaAirTicket = db.ListaCompleta(OrderBy, Nombre, Pais, Provincia, Localidad, Estado);
            int cantidadFilas = listaAirTicket.Count;
            CantidadFilas = cantidadFilas;
            return db.Lista(IndicePagina, TamañoPagina, OrderBy, SessionID, listaAirTicket);
        }
        public static List<Entidades.AirTicket> ListaCompleta(out int CantidadFilas, string OrderBy, string Nombre, string Pais, string Provincia, string Localidad, string Estado, string SessionID, Entidades.Sesion Sesion)
        {
            List<Entidades.AirTicket> listaAirTicket = new List<Entidades.AirTicket>();
            DB.AirTicket db = new DB.AirTicket(Sesion);
            if (OrderBy.Equals(String.Empty))
            {
                OrderBy = "IdAirTicket desc";
            }
            listaAirTicket = db.ListaCompleta(OrderBy, Nombre, Pais, Provincia, Localidad, Estado);
            int cantidadFilas = listaAirTicket.Count;
            CantidadFilas = cantidadFilas;
            return listaAirTicket;
        }
    }
}
